package com.itheima.day3.stream;

import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.IntStream;

public class C06GenerateTest {
    public static void main(String[] args) {

        // 1. IntStream.range
        IntStream.range(1, 10).forEach(System.out::print);
        System.out.println();

        IntStream.rangeClosed(1, 9).forEach(System.out::print);
        System.out.println();

        // 2. IntStream.iterate  生成 1 3 5 7 9 ... 奇数序列    可以根据上一个元素值来生成当前元素
        /**
         * - 参数1 是初始值
         * - 参数2 是一个特殊 Function，即参数类型与返回值相同，它会根据上一个元素 x 的值计算出当前元素
         * - 需要用 limit 限制元素个数
         */
        IntStream.iterate(1, x -> x + 2).limit(10).forEach(System.out::print);
        System.out.println();

        /**
         * - 参数1 是初始值
         * - 参数2 用来限制元素个数，一旦不满足此条件，流就结束
         * - 参数3 相当于上个方法的参数2
         */
        IntStream.iterate(1, x -> x <= 9, x -> x + 2).forEach(System.out::print);
        System.out.println();

        // 3. IntStream.generate
        IntStream.generate(() -> ThreadLocalRandom.current().nextInt(100)).limit(5).forEach(System.out::print);
        System.out.println();

        ThreadLocalRandom.current().ints(5, 0, 100).forEach(System.out::print);
    }
}
